home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2001 May / maximum-cd-2001-05.iso / Blade of Darkness / data1.cab / Program_Executable_Files / Lib / Widgets / ScorerWidgets.py < prev    next >
Encoding:
Python Source  |  2000-11-16  |  39.2 KB  |  1,268 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. import BUIx
  8. import Bladex
  9. import Raster
  10. import Interpolator
  11. #import Enm_Def
  12. import Reference
  13. import math
  14. import pdb
  15. import netgame
  16. import WidgetsExtra
  17. import types
  18.  
  19. font_server=BUIx.B_FontServer()
  20.  
  21. class B_GameTextWidget(BUIx.B_TextWidget):
  22.   def __init__(self,parent,name):
  23.     BUIx.B_TextWidget.__init__(self,parent,name,"\n\n\n\n\n",font_server,"../../Data/Mapa de letras.bmp")
  24.     self.Background=BUIx.B_RectWidget(self,name+"Background",0,0)
  25.     self.Background.SetSolid(1)
  26.     self.SetDrawFunc(self.Draw)
  27.  
  28.   def SetAlpha(self,al):
  29.     BUIx.B_TextWidget.SetAlpha(self,al)
  30.     #self.Background.SetAlpha(al*0.5)
  31.  
  32.   def Draw(self,x,y,time):
  33.     self.Background.DefDraw(x,y,time)
  34.     self.DefDraw(x,y,time)    # Posibles etiquetas.
  35.  
  36.   def SetText(self,txt):
  37.     BUIx.B_TextWidget.SetText(self,txt)
  38.     w,h=self.GetSize()
  39.     self.Background.SetSize(w,h)
  40.  
  41.  
  42.  
  43.  
  44.  
  45. class BarIncClass(Interpolator.LinearInt):
  46.   def __init__(self,init_value,end_value,widget):
  47.     Interpolator.LinearInt.__init__(self,init_value,end_value)
  48.     self.widget=widget
  49.  
  50.   def Execute(self,value):
  51.     ret=Interpolator.LinearInt.Execute(self,value)
  52.     self.widget.SetPosition(ret,0)
  53.  
  54.   def EndExecute(self):
  55.     self.widget.FinalUpdate()
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65. class B_SmoothBarWidget(BUIx.B_BarWidget):
  66.   def __init__(self,parent,name,width,height):
  67.     BUIx.B_BarWidget.__init__(self,parent,name,width,height)
  68.     self.interpolator=Interpolator.Interp("interp"+name)
  69.     self.Updating=0
  70.     self.CurrentTarget=self.GetPosition()
  71.  
  72.  
  73.   def SetPosition(self,pos,smooth=1):
  74.     currpos=self.GetPosition()
  75.     if currpos==pos:
  76.       return
  77.  
  78.     if smooth:
  79.       if self.Updating==1:
  80.         if self.CurrentTarget!=pos:
  81.           #Si ya estß actualizando y recibe una nueva petici≤n para otra posici≤n
  82.           # Trata de atenderla mßs tarde
  83.           Bladex.AddScheduledFunc(Bladex.GetTime()+1.5,self.SetPosition,(pos,1))
  84.           print "Posponed SetPosition",pos,smooth
  85.           return
  86.       else:
  87.         self.Updating=1
  88.         self.CurrentTarget=pos
  89.         now=Bladex.GetTime()
  90.         #print "Updating level bar: now:",now,"pos:",pos,"currpos:",currpos
  91.         m_interp=BarIncClass(currpos,pos,self)
  92.         self.interpolator.AddAction(now,now+1.5,m_interp)
  93.     else:
  94.       BUIx.B_BarWidget.SetPosition(self,pos)
  95.  
  96.  
  97.   def FinalUpdate(self):
  98.     self.Updating=0
  99.     BUIx.B_BarWidget.SetPosition(self,self.CurrentTarget)
  100.     
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107. class B_Obj3DWidget(BUIx.B_RectWidget):
  108.   def __init__(self,Parent,Name,width,Height,BODName,ObjectName=""):
  109.     BUIx.B_RectWidget.__init__(self,Parent,Name,width,Height)
  110.     self.SetData(self)
  111.     self.BODName=BODName
  112.     self.ObjectName=ObjectName
  113.     self.SetDrawFunc(self.Draw)
  114.     self.Selected=0
  115.     self.Solid=0
  116.     self.Border=0
  117.     self.Scale=0.1 
  118.  
  119.  
  120.   def Draw(self,x,y,time):
  121.     if self.BODName==None:
  122.       return
  123.  
  124.     if self.GetVisible()==0:
  125.       return
  126.  
  127. #    if self.Selected:
  128. #      Raster.SetAlpha(1.0)
  129. #    else:
  130. #      Raster.SetAlpha(0.40)
  131.     self.DefDraw(x,y,time)    # Posibles etiquetas.
  132.     w,h=self.GetSize()
  133.     Raster.SetAlpha(self.GetAlpha())
  134.     if self.GetAutoScale():
  135.       rw,rh=Raster.GetSize()
  136.       self.Scale=0.1*rw/640.0
  137.     Bladex.DrawBOD(self.BODName,x,y,w,h,self.Scale,1)
  138.     
  139.   def SetBOD(self,BODName):
  140.     self.BODName=BODName    
  141.  
  142.   def GetBOD(self):
  143.     return self.BODName
  144.  
  145.   def SetObjectName(self,ObjectName):
  146.     self.ObjectName=ObjectName    
  147.  
  148.   def GetObjectName(self):
  149.     return self.ObjectName
  150.  
  151.  
  152. def GetUnusedKeys(inv):
  153.       import darfuncs
  154.       
  155.       i = 0
  156.       for j in range(inv.nKeys):
  157.         key = Bladex.GetEntity(inv.GetKey(j))
  158.  
  159.         if type(key.Data) is types.IntType:
  160.           auxval = key.Data
  161.           key.Data = darfuncs.EmptyClass()
  162.           key.Data.Used = auxval
  163.         
  164.         if key.Data==None:
  165.           key.Data = darfuncs.EmptyClass()
  166.           key.Data.Used = 1
  167.         if key.Data.Used>0:
  168.           i=i+1
  169.       return i 
  170.  
  171.  
  172.  
  173.  
  174. if netgame.GetNetState() == 0:
  175.   import Select
  176.   
  177.   ObjSlTimer = -500
  178.   
  179.   
  180.   
  181.   class B_InvKeyRing3DWidget(BUIx.B_TextWidget):
  182.     def __init__(self,Parent,Name,width,Height,BODName,char):
  183.  
  184.  
  185.       BUIx.B_TextWidget.__init__(self,Parent,Name,"",font_server,"..\\..\\Data\\Mapa de letras.bmp")
  186.       self.SetChar(char)
  187.       self.SetAlpha(1.0)
  188.       self.Scale = 0.075
  189.       self.SetDrawFunc(self.Draw)
  190.       self.SetVisible(1)
  191.       self.SetColor(128,128,128)
  192.  
  193.  
  194.   
  195.   
  196.     def SetChar(self,char):
  197.       self.char=char
  198.       self.inv=char.GetInventory()
  199.  
  200.  
  201.     def Draw(self,x,y,time):
  202.       global ObjSlTimer
  203.       import darfuncs
  204.       
  205.       if self.inv.nKeys==0:
  206.         return
  207.       
  208.       if self.GetVisible()==0:
  209.         return
  210.  
  211.       Raster.SetAlpha(self.GetAlpha())
  212.       
  213.       i = 0
  214.       for j in range(self.inv.nKeys):
  215.         key = Bladex.GetEntity(self.inv.GetKey(j))
  216.         
  217.         if type(key.Data) is types.IntType:
  218.           auxval = key.Data
  219.           key.Data = darfuncs.EmptyClass()
  220.           key.Data.Used = auxval
  221.           
  222.  
  223.         if key.Data==None:
  224.           key.Data = darfuncs.EmptyClass()
  225.           key.Data.Used = 1
  226.         if key.Data.Used>0:
  227.           i=i+1
  228.           
  229.       Bladex.DrawBOD("Llavero",x+24,y+24,0,0,self.Scale,1)
  230.       self.SetText(`i`)
  231.       self.DefDraw(x+10,y+50,time)
  232.           
  233.             
  234.   class B_InvKey3DWidget(BUIx.B_TextWidget):
  235.     def __init__(self,Parent,Name,width,Height,BODName,char):
  236.  
  237.  
  238.       BUIx.B_TextWidget.__init__(self,Parent,Name,"",font_server,"../../Data/Mapa de letras.bmp")
  239.       self.SetChar(char)
  240.       self.SetAlpha(1.0)
  241.       self.Scale = 0.075
  242.       self.SetDrawFunc(self.Draw)
  243.       self.SetVisible(1)
  244.       self.SetColor(128,128,128)
  245.  
  246.  
  247.   
  248.   
  249.     def SetChar(self,char):
  250.       self.char=char
  251.       self.inv=char.GetInventory()
  252.  
  253.  
  254.     def Draw(self,x,y,time):
  255.       global ObjSlTimer
  256.       import darfuncs
  257.       
  258.       if self.inv.nKeys==0:
  259.         return
  260.       
  261.       if self.GetVisible()==0:
  262.         return
  263.       
  264.       if self.inv.GetSelectedObject() != "KeyRing":
  265.         return
  266.       
  267.       if ObjSlTimer < 0:
  268.         return
  269.       
  270.       if ObjSlTimer + 5 < Bladex.GetTime():
  271.         ObjSlTimer = -1
  272.         return
  273.  
  274.  
  275.       Raster.SetAlpha(self.GetAlpha())
  276.       
  277.       i = 0
  278.       for j in range(self.inv.nKeys):
  279.         key = Bladex.GetEntity(self.inv.GetKey(j))
  280.  
  281.         if type(key.Data) is types.IntType:
  282.           auxval = key.Data
  283.           key.Data = darfuncs.EmptyClass()
  284.           key.Data.Used = auxval
  285.         
  286.         if key.Data==None:
  287.           key.Data = darfuncs.EmptyClass()
  288.           key.Data.Used = 1
  289.         if key.Data.Used>0:
  290.           Bladex.DrawBOD(key.Kind,x+8,y+i*16+16,0,0,self.Scale,1)
  291.           self.SetText(Select.GetSelectionData(key.Name)[2])
  292.           self.DefDraw(x+24,y+i*16,time)
  293.           i=i+1
  294.       
  295.   
  296.   
  297.   
  298.   
  299.   
  300.   class B_InvTabletWidget(BUIx.B_TextWidget):
  301.     def __init__(self,Parent,Name,Text,char):        
  302.       #pdb.set_trace
  303.       BUIx.B_TextWidget.__init__(self,Parent,Name,Text,font_server,"../../Data/Icons/Iconosrunas.BMP");
  304.       self.SetChar(char)
  305.       self.SetAlpha(1.0)
  306.       self.SetColor(123,98,42)
  307.       #self.Scale=0.0
  308.       self.Name=Name
  309.       self.SetDrawFunc(self.Draw)
  310.   
  311.     def SetChar(self,char):
  312.       self.char=char
  313.       self.inv=char.GetInventory()
  314.   
  315.   
  316.     def Draw(self,x,y,time):
  317.       #pdb.set_trace()
  318.       if self.inv.GetTablet(self.Name)==None:
  319.         return
  320.       
  321.       if self.GetVisible()==0:
  322.         return
  323.       
  324.       self.DefDraw(x,y,time)
  325.       
  326.   
  327.   class B_InvSpecialKeyWidget(BUIx.B_BitmapWidget):
  328.     def __init__(self,Parent,Name,width,Height,char):    
  329.       BUIx.B_BitmapWidget.__init__(self,Parent,Name,width,Height,Name,"../../Data/Icons/Iconosllaves.mmp");
  330.       self.SetChar(char)
  331.       self.SetAlpha(1.0)
  332.       self.SetColor(255,255,255)
  333.       self.Scale=0.0
  334.       self.Name=Name
  335.       self.SetDrawFunc(self.Draw)
  336.   
  337.     def SetChar(self,char):
  338.       self.char=char
  339.       self.inv=char.GetInventory()
  340.   
  341.   
  342.     def Draw(self,x,y,time):
  343.   
  344.       #pdb.set_trace()
  345.       if self.inv.GetSpecialKey(0)==None:
  346.         return
  347.   
  348.       if self.inv.GetSpecialKey(self.Name)==None:
  349.         self.SetAlpha(0.2)
  350.       else:
  351.         self.SetAlpha(1.0)
  352.       
  353.       
  354.       #pdb.set_trace()
  355.       if self.GetVisible()==0:
  356.         return
  357.   
  358.       w,h=self.GetSize()
  359.       self.DefDraw(x,y,time)
  360.   
  361.   
  362.   
  363.   
  364.   
  365.   
  366.   
  367.   
  368.   
  369.   
  370.   def CreateEnemyWidget(RootName,Frame,set_autoscale=1,SizeXY=28):
  371.    
  372.     wEnemy=BUIx.B_BitmapWidget(Frame,RootName,SizeXY,SizeXY,"Demon","../../Data/Icons/Demon.bmp");
  373.     wEnemy.SetColor(255,255,255)
  374.     
  375.     wVenomEnemy=WidgetsExtra.B_FlashBitmapWidget(Frame,RootName,SizeXY,SizeXY,"Enemy Poisoned","../../Data/Icons/Icono Veneno.bmp");
  376.     wVenomEnemy.SetColor(255,255,255)
  377.     wVenomEnemy.MaxAlpha=0.5
  378.     wVenomEnemy.SetFlash(5)
  379.     wVenomEnemy.SetVisible(0)
  380.     wEnemy.AddLabel(wVenomEnemy,0.5,0.5,
  381.                     BUIx.B_Widget.B_LAB_HCenter,BUIx.B_Widget.B_LAB_VCenter,
  382.                     BUIx.B_Widget.B_FR_HRelative, BUIx.B_Widget.B_FR_HCenter,
  383.                     BUIx.B_Widget.B_FR_VRelative, BUIx.B_Widget.B_FR_VCenter
  384.                     )   
  385.     
  386.     wEnemyLifeLabel=BUIx.B_TextWidget(wEnemy,RootName+"LifeLabel","250",font_server,"../../Data/Mapa de letras.bmp")
  387.     wEnemyLifeLabel.SetColor(255,0,0)
  388.     wEnemyLifeLabel.SetAlpha(0.5)
  389.     wEnemy.AddLabel(wEnemyLifeLabel,2,0,
  390.                     BUIx.B_Widget.B_LAB_HCenter,BUIx.B_Widget.B_LAB_Bottom,
  391.                     BUIx.B_Widget.B_FR_Right,BUIx.B_Widget.B_FR_Right,
  392.                     BUIx.B_Widget.B_FR_AbsoluteTop,BUIx.B_Widget.B_FR_Top
  393.                     )
  394.  
  395.                                         
  396.     wEnemyLevelLabel=BUIx.B_TextWidget(wEnemy,RootName+"LevelLabel","8",font_server,"../../Data/Mapa de letras.bmp")
  397.     wEnemyLevelLabel.SetColor(0,159,220)
  398.     wEnemyLevelLabel.SetAlpha(0.5)
  399.     wEnemy.AddLabel(wEnemyLevelLabel,1,0,
  400.                     BUIx.B_Widget.B_LAB_HCenter,BUIx.B_Widget.B_LAB_VCenter,
  401.                     BUIx.B_Widget.B_FR_Right,BUIx.B_Widget.B_FR_Right,
  402.                     BUIx.B_Widget.B_FR_AbsoluteTop,BUIx.B_Widget.B_FR_Top
  403.                     )
  404.   
  405.     wEnemyLifeBar=WidgetsExtra.B_FlashBarWidget(wEnemy,RootName+"LifeBar",32,5)
  406.     wEnemyLifeBar.SetFlashColor(53, 141, 36)
  407.     wEnemyLifeBar.SetColor(255,0,0)
  408.     wEnemyLifeBar.SetBackgroundColor(0,0,0)
  409.     wEnemyLifeBar.SetFlash(0)
  410.     wEnemyLifeBar.Continuous= 0
  411.     wEnemyLifeBar.SetBackgroundAlpha(1.0)
  412.     wEnemyLifeBar.SetAlpha(1.0)
  413.     wEnemyLifeBar.SetBitmap("BitmapBarraEnemigo")
  414.     wEnemy.AddLabel(wEnemyLifeBar,0.5,12,
  415.                     BUIx.B_Widget.B_LAB_HCenter,BUIx.B_Widget.B_LAB_Bottom,
  416.                     BUIx.B_Widget.B_FR_HCenter,BUIx.B_Widget.B_FR_HCenter,
  417.                     BUIx.B_Widget.B_FR_AbsoluteTop,BUIx.B_Widget.B_FR_Top
  418.                     )
  419.                     
  420.     wEnemyKeyLabel=B_Obj3DWidget (wEnemy,RootName+"Key",32,32,"Llave")
  421.     wEnemyKeyLabel.Scale=0
  422.     wEnemyKeyLabel.SetAlpha(1.0)
  423.     wEnemy.AddLabel(wEnemyKeyLabel,0.5,15+5,
  424.                     BUIx.B_Widget.B_LAB_HCenter,BUIx.B_Widget.B_LAB_Bottom,
  425.                     BUIx.B_Widget.B_FR_HCenter,BUIx.B_Widget.B_FR_HCenter,
  426.                     BUIx.B_Widget.B_FR_AbsoluteTop,BUIx.B_Widget.B_FR_Top
  427.                     )
  428.                     
  429.     wEnemyObjLabel=B_Obj3DWidget(wEnemy,RootName+"Obj",32,32,"Pocima")
  430.     wEnemyObjLabel.Scale=0
  431.     wEnemyObjLabel.SetAlpha(1.0)
  432.     wEnemy.AddLabel(wEnemyObjLabel,0.5,52+7,
  433.                     BUIx.B_Widget.B_LAB_HCenter,BUIx.B_Widget.B_LAB_Bottom,
  434.                     BUIx.B_Widget.B_FR_HCenter,BUIx.B_Widget.B_FR_HCenter,
  435.                     BUIx.B_Widget.B_FR_AbsoluteTop,BUIx.B_Widget.B_FR_Top
  436.                     )
  437.     if set_autoscale:
  438.       wEnemy.SetAutoScale(1)
  439.       wVenomEnemy.SetAutoScale(1)
  440.       wEnemyLifeLabel.SetAutoScale(1)
  441.       wEnemyLevelLabel.SetAutoScale(1)
  442.       wEnemyKeyLabel.SetAutoScale(1)
  443.       wEnemyObjLabel.SetAutoScale(1)
  444.  
  445.     return wEnemy,wVenomEnemy,wEnemyLifeLabel,wEnemyLevelLabel,wEnemyKeyLabel,wEnemyObjLabel,wEnemyLifeBar
  446.  
  447.   
  448.   
  449.   
  450.   
  451.   
  452.   
  453.   
  454.   
  455.   def CreateObjectWidget(RootName,BODName,Frame):
  456.     wObject=B_Obj3DWidget(Frame,RootName,24,32,BODName)
  457.     wObject.SetSolid(0)
  458.     wObject.SetBorder(0)
  459.     wObjectLabel=BUIx.B_TextWidget(wObject,RootName+"Label","",font_server,"../../Data/Mapa de letras.bmp")
  460.     wObjectLabel.SetColor(170,170,170)
  461.     wObjectLabel.SetAlpha(1.0)
  462.     wObject.AddLabel(wObjectLabel,0.5,4,
  463.                     BUIx.B_Widget.B_LAB_HCenter,BUIx.B_Widget.B_LAB_Bottom,
  464.                     BUIx.B_Widget.B_FR_HRelative,BUIx.B_Widget.B_FR_HCenter,
  465.                     BUIx.B_Widget.B_FR_AbsoluteTop,BUIx.B_Widget.B_FR_Top
  466.                     )
  467.     return wObject,wObjectLabel
  468.   
  469.   
  470.   
  471.   
  472.   
  473.   
  474.   
  475.   CYCLE_SPEED = 0.25
  476.   
  477.   class B_ObjectsFrame(BUIx.B_FrameWidget):
  478.     def __init__(self,Parent,Name,width,Height,char,InitObjPositions=[(0, 6),   (25, 6),   (50, 6),   (75, 6),   (100, 6),
  479.                                                                       (0,40),   (25,40),   (50,40),   (75,40),   (100,40),
  480.                                                                       (0,64),   (25,64),   (50,64),   (75,64),   (100,64)]):
  481.       BUIx.B_FrameWidget.__init__(self,Parent,Name,width,Height)
  482.       self.wObjects=[]
  483.       self.nObjects=len(InitObjPositions)
  484.       self.SetChar(char)
  485.       self.LastTime      = 0.0
  486.       self.LastSelection = 0
  487.   
  488.       
  489.       self.NameText=BUIx.B_TextWidget(self,"ObjName","Hola",font_server,"../../Data/Mapa de letras.bmp")
  490.       self.NameText.SetColor(255,255,255)
  491.       self.NameText.SetAlpha(1.0)
  492.       self.AddWidget(self.NameText,0.5,56,
  493.                        BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_HCenter,
  494.                        BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  495.       self.NameText.SetAutoScale(1)
  496.                        
  497.       self.BarraBonita = BUIx.B_BitmapWidget(self,"ObjNameBg",125,20,"MARCOINVENTARIO","../../Data/marcoinventario.mmp");
  498.       self.BarraBonita.SetColor(255,255,255)
  499.       self.BarraBonita.SetAlpha(0.75)
  500.       self.AddWidget(self.BarraBonita,0.5,52,
  501.                        BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_HCenter,
  502.                        BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  503.       self.BarraBonita.SetAutoScale(1)
  504.       
  505.  
  506.       for i in range(self.nObjects):
  507.         self.AddNewObject("ObjectElement_"+str(i), InitObjPositions[i]) 
  508.       self.AddWidgets()
  509.  
  510.       self.SetDrawFunc(self.Draw)
  511.   
  512.   
  513.   
  514.     def AddNewObject(self, object_name, InitObjPosition):
  515.         wObj=B_Obj3DWidget(self,object_name,24,32,"Pocima")
  516.         wObj.SetAlpha(1.0)
  517.         wObj.InitAlpha=1.0
  518.         wObj.Position=InitObjPosition
  519.         wObj.Scale=0
  520.         wObj.SetAutoScale(1)
  521.         self.wObjects.append(wObj)
  522.         
  523.     def Draw(self,x,y,time):
  524.       self.DefDraw(x,y,time)    # Posibles etiquetas.
  525.  
  526.       nb=len(self.BODList)
  527.       if nb>self.nObjects:
  528.         print "Error in objects frame, trying to display more objects than "+`self.nObjects`
  529.         return
  530.       
  531.   
  532.       text = ""
  533.       iCentral = 0
  534.       for i in range(nb):
  535.           if self.inv.IsObjectSelected(i):
  536.             iCentral = i
  537.  
  538.       if self.LastSelection != iCentral:
  539.         self.LastTime      = time+CYCLE_SPEED
  540.         self.LastSelection = iCentral
  541.       
  542.       if self.LastTime > time:
  543.          DeltaVariation = (self.LastTime-time)/CYCLE_SPEED
  544.       else:
  545.          DeltaVariation = 0
  546.  
  547.       if nb>0:
  548.         Advance = (3.1415*2)/nb
  549.         for i in range(nb):
  550.           wObjCurr=self.wObjects[i]
  551.  
  552.           Angle = Advance*(i-iCentral+DeltaVariation)
  553.           SelFactor = (math.cos(Angle)+1.0)/2.0
  554.           wx,wy = self.GetSize()
  555.           rw,rh=Raster.GetSize()
  556.           wx =wx*640/rw
  557.           wy =wy*480/rh
  558.           self.MoveWidgetTo(wObjCurr.Name(),(math.sin(Angle)+1.0)*(wx-25.0)/2.0,SelFactor*20.0)
  559.                     
  560.           wObjCurr.SetBOD(self.BODList[i])
  561.           wObjCurr.SetVisible(1)
  562.           wObjCurr.SetAlpha((SelFactor**2)*0.9+0.1)
  563.         
  564.           nMaxItems=self.inv.GetMaxNumberObjectsAt(i)
  565.           if self.inv.IsObjectSelected(i):
  566.             if self.BODList[i] == "Llavero":
  567.                 text = "("+`GetUnusedKeys(self.inv)`+") "
  568.             elif nMaxItems>1:
  569.                     nItems=self.inv.GetNumberObjectsAt(i)
  570.                     text="("+str(nItems)+"/"+str(nMaxItems)+") "
  571.             else:
  572.                     text = ""
  573.  
  574.       if self.inv.GetSelectedObject():
  575.         self.NameText.SetText(text+Select.GetSelectionData(self.inv.GetSelectedObject())[2])
  576.         self.BarraBonita.SetVisible(1)
  577.       else:
  578.         self.NameText.SetText("")
  579.         self.BarraBonita.SetVisible(0)
  580.  
  581.       for i in range(nb,self.nObjects):
  582.         self.wObjects[i].SetVisible(0)
  583.   
  584.       self.RecalcLayout()
  585.       
  586.       
  587.     def SetBODs(self,BODList):
  588.       self.BODList = BODList
  589.       
  590.   
  591.     def SetObjectNames(self,ObjectNameList):
  592.       nb=len(ObjectNameList)
  593.       if nb>self.nObjects:
  594.         print "Error in objects frame, trying to display more objects than "+`self.nObjects`
  595.         return
  596.   
  597.       for i in range(nb):
  598.         wObjCurr=self.wObjects[i]
  599.         wObjCurr.SetObjectName(ObjectNameList[i])
  600.   
  601.   
  602.     def SetChar(self,char):
  603.       self.char=char
  604.       self.inv=char.GetInventory()
  605.   
  606.   
  607.   
  608.     def AddWidgets(self):
  609.       for i in self.wObjects:
  610.         self.AddWidget(i,i.Position[0],i.Position[1],
  611.                        BUIx.B_FrameWidget.B_FR_AbsoluteLeft,BUIx.B_FrameWidget.B_FR_Left,
  612.                        BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  613.   
  614.   
  615.   
  616.   
  617.   
  618.   class B_HandWidget(BUIx.B_FrameWidget):
  619.     def __init__(self,Parent,Name,width,Height,Side,
  620.                  InitObjAlpha=[1.0,0.3,0.2,0.1],
  621.                  InitObjPositions=[(5,10),(35,20),(75,30),(110,40)],
  622.                  Wants_auto_scale=1):
  623.       BUIx.B_FrameWidget.__init__(self,Parent,Name,width,Height)
  624.       self.SetAutoScale(Wants_auto_scale)
  625.   
  626.       if(len(InitObjAlpha)!=len(InitObjPositions)):
  627.         raise InitError, "Init size mismatch"
  628.   
  629.       self.nObjects=len(InitObjAlpha)
  630.       self.Side=Side
  631.   
  632.       self.wObjects=[]
  633.       for i in range(self.nObjects):
  634.         wObj=B_Obj3DWidget(self,"HandElement_"+str(i),140,140,"Unset")
  635.         wObj.SetAlpha(InitObjAlpha[i])
  636.         wObj.InitAlpha=InitObjAlpha[i]
  637.         wObj.Position=InitObjPositions[i]
  638.         wObj.Scale=0.1
  639.         wObj.SetAutoScale(Wants_auto_scale)
  640.         self.wObjects.append(wObj)
  641.   
  642.       # Textos del objeto seleccionado
  643.       self.wNameText=BUIx.B_TextWidget(self,"NameText","",font_server,"../../Data/Mapa de letras.bmp")
  644.       self.wNameText.SetColor(170,170,170)
  645.       self.wNameText.SetAlpha(1.0)
  646.       self.wNameText.SetAutoScale(Wants_auto_scale)
  647.       self.wDefText=BUIx.B_TextWidget(self,"DefText","+0 DEF ",font_server,"../../Data/Mapa de letras.bmp")
  648.       self.wDefText.SetAlpha(1.0)
  649.       self.wDefText.SetColor(255,0,0)
  650.       self.wDefText.SetAutoScale(Wants_auto_scale)
  651.       self.wPowText=BUIx.B_TextWidget(self,"PowText","+0 POW",font_server,"../../Data/Mapa de letras.bmp")
  652.       self.wPowText.SetAlpha(1.0)
  653.       self.wPowText.SetColor(0,160,221)
  654.       self.wPowText.SetAutoScale(Wants_auto_scale)
  655.       self.wAltPowText=BUIx.B_TextWidget(self,"AltPowText","+0 POW",font_server,"../../Data/Mapa de letras.bmp")
  656.       self.wAltPowText.SetAlpha(1.0)
  657.       self.wAltPowText.SetColor(0,160,221)
  658.       self.wAltPowText.SetAutoScale(Wants_auto_scale)
  659.       self.wResText=BUIx.B_TextWidget(self,"ResText","RESISTANCE: 0/0",font_server,"../../Data/Mapa de letras.bmp")
  660.       self.wResText.SetAlpha(1.0)
  661.       self.wResText.SetColor(119,241,252)
  662.       self.wResText.SetAutoScale(Wants_auto_scale)
  663.   
  664.       self.AddWidget(self.wNameText,0.5,0,
  665.                      BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_HCenter,
  666.                      BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  667.   
  668.       self.AddWidget(self.wDefText,0.5,12,
  669.                      BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_Right,
  670.                      BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  671.   
  672.       self.AddWidget(self.wPowText,0.5,12,
  673.                      BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_Left,
  674.                      BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  675.   
  676.       self.AddWidget(self.wAltPowText,0.5,12,
  677.                      BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_HCenter,
  678.                      BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  679.   
  680.       self.AddWidget(self.wResText,0.5,24,
  681.                      BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_HCenter,
  682.                      BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  683.       
  684.       self.AddWidgets()
  685.   
  686.     def AddWidgets(self):
  687.       wid_pos=BUIx.B_FrameWidget.B_FR_AbsoluteLeft
  688.       wid_anc=BUIx.B_FrameWidget.B_FR_Left
  689.       if self.Side!="Left":
  690.         wid_pos=BUIx.B_FrameWidget.B_FR_AbsoluteRight
  691.         wid_anc=BUIx.B_FrameWidget.B_FR_Right
  692.   
  693.       for i in self.wObjects:
  694.         self.AddWidget(i,i.Position[0],i.Position[1],
  695.                        wid_pos,wid_anc,
  696.                        BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  697.   
  698.   
  699.   
  700.     def ResetPositions(self):
  701.       for i in self.wObjects:
  702.         self.RemoveWidget(i.Name(),0)
  703.       self.AddWidgets()
  704.       index=0
  705.       for i in self.wObjects:
  706.         i.SetAlpha(i.InitAlpha)
  707.         index=index+1
  708.   
  709.   
  710.   
  711.     def SetBODs(self,BODList):
  712.       nb=len(BODList)
  713.       if nb>self.nObjects:
  714.         print "Error in hand widgets, trying to display more objects than "+`self.nObjects`
  715.         return
  716.   
  717.       for i in range(nb):
  718.         self.wObjects[i].SetBOD(BODList[i])
  719.         self.wObjects[i].SetVisible(1)
  720.   
  721.       for i in range(nb,self.nObjects):
  722.         self.wObjects[i].SetVisible(0)
  723.  
  724.     def SetObjectNames(self,ObjectNameList):
  725.       nb=len(ObjectNameList)
  726.       if nb>self.nObjects:
  727.         print "Error in hand widgets, trying to display more objects than "+`self.nObjects`
  728.         return
  729.       for i in range(nb):
  730.         wObjCurr=self.wObjects[i]
  731.         wObjCurr.SetObjectName(ObjectNameList[i])
  732.  
  733.     def SetText(self,name,power,defence,res,res_max):
  734.       #print name,power,defence,res,res_max
  735.       if power==None or name==None:
  736.         self.SwitchOffText()      
  737.       if defence!=None and res!=None and res_max != None:
  738.         self.SetNamePowDefResText(name,power,defence,res,res_max)
  739.       elif res!=None and res_max != None:
  740.         self.SetNamePowResText(name,power,res,res_max)
  741.       elif defence!=None:
  742.         self.SetNamePowDefText(name,power,defence)
  743.       
  744.  
  745.     def SwitchOffText(self):
  746.       self.wNameText.SetText("")
  747.       self.wDefText.SetVisible(0)
  748.       self.wPowText.SetVisible(0)
  749.       self.wAltPowText.SetVisible(0)
  750.       self.wResText.SetVisible(0)
  751.       
  752.     def SetNamePowDefText(self,name,power,defence):
  753.       self.wNameText.SetText(name)
  754.       
  755.       self.wDefText.SetVisible(1)
  756.       self.wPowText.SetVisible(1)
  757.       self.wAltPowText.SetVisible(0)
  758.       self.wResText.SetVisible(0)
  759.       
  760.       def_text= `defence`+' DEF '
  761.       if defence>=0:
  762.         def_text= '+'+def_text
  763.         self.wDefText.SetColor(0,160,221)
  764.       else:
  765.         self.wDefText.SetColor(255,0,0)
  766.       self.wDefText.SetText(def_text)     
  767.  
  768.       power_text= `power`+' POW'
  769.       if power>=0:
  770.         power_text= '+'+power_text
  771.         self.wPowText.SetColor(0,160,221)
  772.       else:
  773.         self.wPowText.SetColor(255,0,0)
  774.       power_text= ' '+power_text
  775.       self.wPowText.SetText(power_text)     
  776.             
  777.       self.RecalcLayout()
  778.   
  779.     def SetNamePowResText(self,name,power,resistance,max_resistance):
  780.       self.wNameText.SetText(name)
  781.       
  782.       self.wDefText.SetVisible(0)
  783.       self.wPowText.SetVisible(0)
  784.       self.wAltPowText.SetVisible(1)
  785.       self.wResText.SetVisible(1)
  786.       
  787.       power_text= `power`+' POW'
  788.       if power>=0:
  789.         power_text= '+'+power_text
  790.         self.wAltPowText.SetColor(0,160,221)
  791.       else:
  792.         self.wAltPowText.SetColor(255,0,0)
  793.       power_text= ' '+power_text
  794.       self.wAltPowText.SetText(power_text)
  795.             
  796.       resistance_text='RESISTANCE: '+`resistance`+' / '+`max_resistance`
  797.       self.wResText.SetText(resistance_text)
  798.       self.RecalcLayout()
  799.  
  800.     def SetNamePowDefResText(self,name,power,defence,resistance,max_resistance):
  801.       self.wNameText.SetText(name)
  802.       
  803.       self.wDefText.SetVisible(1)
  804.       self.wPowText.SetVisible(1)
  805.       self.wAltPowText.SetVisible(0)
  806.       self.wResText.SetVisible(1)
  807.       
  808.       def_text= `defence`+' DEF '
  809.       if defence>=0:
  810.         def_text= '+'+def_text
  811.         self.wDefText.SetColor(0,160,221)
  812.       else:
  813.         self.wDefText.SetColor(255,0,0)
  814.       self.wDefText.SetText(def_text)     
  815.  
  816.       power_text= `power`+' POW'
  817.       if power>=0:
  818.         power_text= '+'+power_text
  819.         self.wPowText.SetColor(0,160,221)
  820.       else:
  821.         self.wPowText.SetColor(255,0,0)
  822.       power_text= ' '+power_text
  823.       self.wPowText.SetText(power_text)     
  824.             
  825.       resistance_text='RESISTANCE: '+`resistance`+' / '+`max_resistance`
  826.       self.wResText.SetText(resistance_text)
  827.       self.RecalcLayout()
  828.  
  829.   
  830.   class FadeInClass(Interpolator.LinearInt):
  831.     def __init__(self,init_value,end_value,parent,widget):
  832.       Interpolator.LinearInt.__init__(self,init_value,end_value)
  833.       self.parent=parent
  834.       self.widget=widget
  835.   
  836.     def Execute(self,value):
  837.       ret=Interpolator.LinearInt.Execute(self,value)
  838.       self.widget.MultiplyAlpha(ret)
  839.       self.parent.view_status=1
  840.   
  841.   
  842.     def EndExecute(self):
  843.       self.parent.view_status=2
  844.   
  845.   
  846.   
  847.   
  848.   
  849.   
  850.   class FadeOutClass(Interpolator.LinearInt):
  851.     def __init__(self,init_value,end_value,parent,widget):
  852.       Interpolator.LinearInt.__init__(self,init_value,end_value)
  853.       self.parent=parent
  854.       self.widget=widget
  855.   
  856.     def Execute(self,value):
  857.       ret=Interpolator.LinearInt.Execute(self,value)
  858.       self.widget.MultiplyAlpha(ret)
  859.       self.parent.view_status=3
  860.   
  861.     def EndExecute(self):
  862.       self.widget.SetVisible(0)
  863.       self.parent.view_status=0
  864.   
  865.   
  866.   
  867.   
  868.   
  869.   
  870.   
  871.   class CycleClass:
  872.     def __init__(self,init_value,end_value,parent,parentwidget,objwidget):
  873.       self.init_value=init_value
  874.       self.end_value=end_value
  875.       self.periodX=end_value[0]-init_value[0]
  876.       self.periodY=end_value[1]-init_value[1]
  877.       self.periodAlpha=end_value[2]-init_value[2]
  878.       self.periodWidth=end_value[0]-init_value[0]
  879.       self.periodHeight=end_value[1]-init_value[1]
  880.       self.parent=parent
  881.       self.parentwidget=parentwidget
  882.       self.objwidget=objwidget
  883.       self.parent.view_status=2
  884.   
  885.     def Execute(self,value):
  886.       ret=(self.init_value[0]+self.periodX*value,
  887.            self.init_value[1]+self.periodY*value,
  888.            self.init_value[2]+self.periodAlpha*value,
  889.           )
  890.       self.parentwidget.MoveWidgetTo(self.objwidget.Name(),ret[0],ret[1])
  891.       self.objwidget.SetAlpha(ret[2])
  892.   
  893.   
  894.     def EndExecute(self):
  895.       self.parent.EndCycle()
  896.   
  897.   
  898.   
  899.   
  900.   
  901.   
  902.   
  903.   import pdb
  904.   class InvControl:
  905.     def __init__(self,name,widget,char,view_period=2.0,cycle_period=0.3,fadein_period=0.3,fadeout_period=0.3,
  906.                  end_cycle_callback=None,Wants_auto_scale=1):
  907.       self.view_time=-2.0       # Auxiliar
  908.       self.cycle_time=-2.0      # Auxiliar
  909.       self.cycle_count=0        # Auxiliar
  910.   
  911.       self.view_period=view_period       # Tiempo que permanece visible
  912.       self.cycle_period=cycle_period     # Tiempo que tarda en ciclar
  913.       self.fadein_period=fadein_period   # Tiempo que tarda en aparecer
  914.       self.fadeout_period=fadeout_period  # Tiempo que tarda en desaparecer
  915.       self.view_status=0  #0:no visible, 1:Apareciendo, 2: Visible, 3: Desapareciendo 
  916.       self.widget=widget
  917.       self.SetChar(char)
  918.       self.interpolator=Interpolator.Interp(name)
  919.       self.name=name
  920.       self.m_FadeIn=FadeInClass(0.0,1.0,self,self.widget)
  921.       self.m_FadeOut=FadeOutClass(1.0,0.0,self,self.widget)
  922.       self.SetBODs()
  923.       self.end_cycle_callback=end_cycle_callback
  924.   
  925.   
  926.     def SetChar(self,char):
  927.       self.char=char
  928.       self.inv=char.GetInventory()
  929.   
  930.     def CycleFunc(self):
  931.       time=Bladex.GetTime()
  932.       self.view_time=time
  933.       Bladex.AddScheduledFunc(time+self.view_period,self.FadeOut,())
  934.   
  935.       
  936.     def EndCycle(self):
  937.       self.cycle_count=self.cycle_count+1
  938.       if self.cycle_count==self.widget.nObjects:
  939.         self.cycle_count=0
  940.         self.CycleFunc()
  941.         #pdb.set_trace()
  942.         if self.widget.wObjects[0].GetVisible():
  943.           name=Reference.GetObjectFriendlyName(self.widget.wObjects[0].GetBOD())
  944.           power, defence, res, res_max= Reference.GiveObjectPowDefResResMaxData(self.widget.wObjects[0].GetObjectName())
  945.           self.widget.SetText(name, power, defence, res, res_max)
  946.         else:
  947.           self.widget.SetText(None, None, None, None, None)
  948.         
  949.   
  950.       
  951.   
  952.     def SetBODs(self):
  953.       pass
  954.   
  955.   
  956.     def FadeOut(self):
  957.       time=Bladex.GetTime()
  958.       if time-self.view_time>self.view_period:
  959.         self.view_status=3
  960.         if self.end_cycle_callback:
  961.           self.end_cycle_callback()
  962.         self.interpolator.AddAction(time,time+self.fadeout_period,self.m_FadeOut)
  963.   
  964.   
  965.   
  966.     def CycleElements(self):
  967.       self.SetBODs()
  968.       if self.widget.wObjects[0].GetVisible():
  969.         name=Reference.GetObjectFriendlyName(self.widget.wObjects[0].GetBOD())
  970.         power, defence, res, res_max= Reference.GiveObjectPowDefResResMaxData(self.widget.wObjects[0].GetObjectName())
  971.         self.widget.SetText(name, power, defence, res, res_max)
  972.       else:
  973.         self.widget.SetText(None, None, None, None, None)
  974.       
  975.       #if self.char.Wuea==Enm_Def.WUEA_WAIT:
  976.     #  return
  977.       time=Bladex.GetTime()
  978.       if self.view_status==2:  #Si es visible puedo ciclar
  979.         if time-self.cycle_time>self.cycle_period:
  980.           self.cycle_time=time
  981.           self.view_time=time
  982.           end_cycle_time=time+self.cycle_period
  983.   
  984.           if len(self.widget.wObjects)>1:
  985.             init_list=[]
  986.             for i in self.widget.wObjects:
  987.               init_list.append(i.Position[0],i.Position[1],i.InitAlpha)
  988.   
  989.             len_init_list=len(init_list)
  990.             m_Cycle=CycleClass(init_list[0],
  991.                                init_list[self.widget.nObjects-1],
  992.                                self,
  993.                                self.widget,
  994.                                self.widget.wObjects[0]
  995.                               )
  996.             self.interpolator.AddAction(time,end_cycle_time,m_Cycle)
  997.   
  998.             for i in range(1,len_init_list):
  999.               m_Cycle=CycleClass(init_list[i],
  1000.                                  init_list[i-1],
  1001.                                  self,
  1002.                                  self.widget,
  1003.                                  self.widget.wObjects[i]
  1004.                                 )
  1005.               self.interpolator.AddAction(time,end_cycle_time,m_Cycle)
  1006.   
  1007.   
  1008.       if time-self.view_time>self.view_period:
  1009.         if self.view_status==0:
  1010.           #pdb.set_trace()
  1011.           self.Alpha=0.0
  1012.           self.widget.MultiplyAlpha(self.Alpha)
  1013.           self.widget.SetVisible(1)
  1014.           self.view_status=1
  1015.           self.interpolator.AddAction(time,time+self.fadein_period,self.m_FadeIn)
  1016.           Bladex.AddScheduledFunc(Bladex.GetTime()+self.view_period,self.FadeOut,())
  1017.         elif self.view_status==1:
  1018.           pass
  1019.         elif self.view_status==2:
  1020.           pass
  1021.         #elif self.view_status==3:
  1022.           #self.view_status=1
  1023.           #Bladex.AddScheduledFunc(Bladex.GetTime()+0.1,self.FadeIn,())
  1024.           #print "Not implemented"
  1025.         self.view_time=time
  1026.   
  1027.   
  1028.   
  1029.     def HideElements(self):
  1030.       if self.view_status==1:
  1031.         time=Bladex.GetTime()
  1032.         if time-self.view_time>1.0:
  1033.           self.view_status=0
  1034.           self.widget.SetVisible(0)
  1035.         else:
  1036.           Bladex.AddScheduledFunc(time+2.0,self.HideElements,())
  1037.   
  1038.   
  1039.   class InvArrowsControl(BUIx.B_FrameWidget):
  1040.     def __init__(self,Parent,Name,width,Height,char):        
  1041.       #pdb.set_trace
  1042.       BUIx.B_FrameWidget.__init__(self,Parent,Name,width,Height)
  1043.       
  1044.       self.wNameText=BUIx.B_TextWidget(self,"NameText","UNSPECIFIED ARROWS",font_server,"../../Data/Mapa de letras.bmp")
  1045.       self.wNameText.SetAlpha(1.0)
  1046.       self.wNameText.SetColor(170,170,170)
  1047.       self.AddWidget(self.wNameText,0.5,0,
  1048.                      BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_HCenter,
  1049.                      BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  1050.       
  1051.       self.wNumText=BUIx.B_TextWidget(self,"NumText","0/0",font_server,"../../Data/Mapa de letras.bmp")
  1052.       self.wNumText.SetAlpha(1.0)
  1053.       self.wNumText.SetColor(0,159,220)  
  1054.       self.AddWidget(self.wNumText,0.5,12,
  1055.                      BUIx.B_FrameWidget.B_FR_HRelative,BUIx.B_FrameWidget.B_FR_HCenter,
  1056.                      BUIx.B_FrameWidget.B_FR_AbsoluteTop,BUIx.B_FrameWidget.B_FR_Top)
  1057.   
  1058.       self.SetChar(char)    
  1059.       self.Name=Name
  1060.       self.SetDrawFunc(self.Draw)
  1061.   
  1062.     def SetChar(self,char):
  1063.       self.char=char
  1064.       self.inv=char.GetInventory()
  1065.   
  1066.   
  1067.     def Draw(self,x,y,time):
  1068.       #pdb.set_trace()
  1069.       quiver= self.inv.GetSelectedQuiver()
  1070.       if not quiver:
  1071.         return
  1072.   
  1073.       #if quiver!=self.inv.GetLeftBack() and quiver!=self.inv.GetRightBack():    
  1074.       if not self.inv.HoldingBow and not self.inv.HasBowOnBack:
  1075.         return
  1076.       
  1077.       object=Bladex.GetEntity(quiver)
  1078.       self.wNameText.SetText(Reference.GetObjectFriendlyName(object.Data.ArrowType)+"s")  
  1079.       self.wNumText.SetText(`object.Data.NumberOfArrows()`+"/"+`object.Data.MaxArrows`)
  1080.       self.RecalcLayout()
  1081.       w,h=self.GetSize()
  1082.       self.DefDraw(x,y,time)
  1083.   
  1084.   class InvShieldControl(InvControl):
  1085.     InvMode=0  # 0: Shields, 1:Quivers
  1086.   
  1087.     def CycleFunc(self):
  1088.       #pdb.set_trace()
  1089.       InvControl.CycleFunc(self)
  1090.       if self.InvMode==0:  #Shields
  1091.         self.inv.CycleShields()
  1092.       else:
  1093.         self.inv.CycleQuivers()
  1094.       self.SetBODs()
  1095.       self.widget.ResetPositions()
  1096.   
  1097.   
  1098.     def SetBODs(self):
  1099.       GetObjFunc=None
  1100.   
  1101.       nItems=0
  1102.       if self.InvMode==0:
  1103.         GetObjFunc=self.inv.GetShield
  1104.         nItems=self.inv.nShields
  1105.       else:
  1106.         GetObjFunc=self.inv.GetQuiver
  1107.         nItems=self.inv.nQuivers
  1108.   
  1109.   
  1110.       BODList=[]
  1111.       ObjectNameList=[]
  1112.       for i in range(nItems):
  1113.         Obj=GetObjFunc(i)
  1114.         ent=Bladex.GetEntity(Obj)
  1115.         BOD=ent.Kind        
  1116.         BODList.append(BOD)
  1117.         Name=ent.Name
  1118.         ObjectNameList.append(Name)
  1119.   
  1120.       self.widget.SetBODs(BODList)
  1121.       self.widget.SetObjectNames(ObjectNameList)
  1122.   
  1123.   
  1124.   
  1125.     def SetInvMode(self,new_mode):
  1126.       if self.InvMode==new_mode:
  1127.         return
  1128.   
  1129.       self.InvMode=new_mode
  1130.       self.SetBODs()
  1131.   
  1132.   
  1133.   
  1134.   
  1135.   
  1136.   
  1137.   class InvWeaponsControl(InvControl):
  1138.     def __init__(self,name,widget,char,ShieldsControl,view_period=2.0,cycle_period=0.3,fadein_period=0.3,
  1139.                  fadeout_period=0.3,end_cycle_callback=None,Wants_auto_scale=1):
  1140.       InvControl.__init__(self,name,widget,char,view_period,cycle_period,fadein_period,fadeout_period,
  1141.                           end_cycle_callback,Wants_auto_scale)
  1142.       self.ShieldsControl=ShieldsControl
  1143.   
  1144.   
  1145.   
  1146.     def CycleFunc(self):
  1147.       #pdb.set_trace()
  1148.       InvControl.CycleFunc(self)
  1149.       self.inv.CycleWeapons()
  1150.       self.SetBODs()
  1151.       self.widget.ResetPositions()
  1152.       sel_weapon=self.inv.GetSelectedWeapon()
  1153.       if sel_weapon:     
  1154.         sel_entity=Bladex.GetEntity(sel_weapon)
  1155.         if Reference.GiveObjectFlag(sel_weapon)==Reference.OBJ_BOW:
  1156.           self.ShieldsControl.SetInvMode(1)
  1157.         else:
  1158.           self.ShieldsControl.SetInvMode(0)
  1159.   
  1160.   
  1161.     def SetBODs(self):
  1162.       GetObjFunc=self.inv.GetWeapon
  1163.       BODList=[]
  1164.       ObjectNameList=[]
  1165.       for i in range(self.inv.nWeapons):
  1166.         Obj=GetObjFunc(i)
  1167.         ent=Bladex.GetEntity(Obj)
  1168.         BOD=ent.Kind
  1169.         BODList.append(BOD)
  1170.         Name=ent.Name
  1171.         ObjectNameList.append(Name)
  1172.       
  1173.       self.widget.SetBODs(BODList)
  1174.       self.widget.SetObjectNames(ObjectNameList)
  1175.     
  1176.   
  1177.   
  1178.   def AddKeyRingToInventory():
  1179.     import Actions
  1180.     import darfuncs
  1181.     if not Bladex.GetEntity("KeyRing"):
  1182.       KeyRing =Bladex.CreateEntity("KeyRing","Llavero",0,0,0)
  1183.       KeyRing.Static = 0
  1184.       darfuncs.SetHint(KeyRing,"Keys")
  1185.       Actions.TakeObject("Player1","KeyRing")
  1186.   
  1187.   
  1188.   class InvObjectsControl(InvControl):
  1189.     def __init__(self,name,widget,char,view_period=2.0,cycle_period=0.3,fadein_period=0.3,
  1190.                  fadeout_period=0.3,end_cycle_callback=None,Wants_auto_scale=1):
  1191.       InvControl.__init__(self,name,widget,char,
  1192.                           view_period,cycle_period,fadein_period,fadeout_period,
  1193.                           end_cycle_callback,
  1194.                           Wants_auto_scale)
  1195.       self.cycle_period=0.0     # Tiempo que tarda en ciclar
  1196.       self.end_cycle_callback = self.DeactivateUseFunc
  1197.     
  1198.     def DeactivateUseFunc(self):
  1199.       self.char.Data.InventoryActive = 0
  1200.   
  1201.   
  1202.     def CycleFunc(self):
  1203.       InvControl.CycleFunc(self)
  1204.       self.inv.CycleObjects()
  1205.       self.SetBODs()
  1206.   
  1207.       
  1208.     def SetBODs(self):
  1209.       BODList=[]
  1210.       ObjectNameList=[]
  1211.       for i in range(self.inv.nKindObjects):
  1212.         Obj0=self.inv.GetObject(i)
  1213.         ent=Bladex.GetEntity(Obj0)
  1214.         BOD=ent.Kind
  1215.         BODList.append(BOD)
  1216.         Name=ent.Name
  1217.         ObjectNameList.append(Name)
  1218.   
  1219.       self.widget.SetBODs(BODList)
  1220.       self.widget.SetObjectNames(ObjectNameList)
  1221.   
  1222.   
  1223.   
  1224.   
  1225.     def CycleElements(self):
  1226.       global ObjSlTimer
  1227.       if self.inv.nKeys:
  1228.        AddKeyRingToInventory()
  1229.       
  1230.       time=Bladex.GetTime()
  1231.       ObjSlTimer = time
  1232.       self.char.Data.InventoryActive = 1
  1233.       if self.view_status==2:  #Si es visible puedo ciclar
  1234.         if time-self.cycle_time>self.cycle_period:
  1235.           self.cycle_time=time
  1236.           self.view_time=time
  1237.           end_cycle_time=time+self.cycle_period
  1238.           self.CycleFunc()
  1239.   
  1240.       if time-self.view_time>self.view_period:
  1241.         if self.view_status==0:
  1242.           self.Alpha=0.0
  1243.           self.widget.MultiplyAlpha(self.Alpha)
  1244.           self.widget.SetVisible(1)
  1245.           self.view_status=1
  1246.           self.SetBODs()
  1247.           self.interpolator.AddAction(time,time+self.fadein_period,self.m_FadeIn)
  1248.           Bladex.AddScheduledFunc(Bladex.GetTime()+self.view_period,self.FadeOut,())
  1249.         elif self.view_status==1:
  1250.           pass
  1251.         elif self.view_status==2:
  1252.           pass
  1253.         elif self.view_status==3:
  1254.           #self.view_status=1
  1255.           #Bladex.AddScheduledFunc(Bladex.GetTime()+0.1,self.FadeIn,())
  1256.           print "Not implemented"
  1257.         self.view_time=time
  1258.   
  1259.   
  1260.   
  1261.   
  1262.   
  1263.   
  1264.   
  1265.   
  1266.   
  1267.   
  1268.